package com.tul.exercise.base.subjectobserver;

import java.util.ArrayList;
import java.util.List;

/**
 * @author tul on 2018/7/22.
 */
public class WeatherData implements Subject{
    /**
     * 数据
     */
    private DataInfo data;

    /**
     * 观察者队列
     */
    private List<Observer> observerList;


    public WeatherData() {
        observerList = new ArrayList<Observer>();
    }

    /**
     * 添加观察者
     *
     * @param obj 观察者
     */
    public void addObserver(Observer obj) {
        this.observerList.add(obj);
    }

    /**
     * 删除观察者
     *
     * @param obj 观察者
     */
    public void removeObserver(Observer obj) {
        this.observerList.remove(obj);
    }

    /**
     * 通知观察者
     */
    public void notifyObsever() {
        this.observerList.forEach(observer->observer.update(getData()));
    }

    public DataInfo getData() {
        return data;
    }

    public void setData(DataInfo data) {
        this.data = data;
        // 设置值，通知观察者
        this.notifyObsever();
    }
}
